package com.work.blog.utils;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.util.UUID;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:DELL
 * Date:2025-06-19
 * Time:17:05
 */
//加密和解密
public class SecurityUtils {
    //加密
    //password：用户注册时输入的密码
    //return：数据库中存储的信息：盐值+md5（明文+盐值）
    public static String encrypt(String password){
        //生成随机盐值并去掉-
        String salt = UUID.randomUUID().toString().replace("-","");
        //对明文+盐值，进行MD5加密---》md5（明文+盐值）（用户注册的明文）
        String finalPassword = DigestUtils.md5DigestAsHex((password + salt).getBytes());
        //返回：盐值+md5（明文+盐值）密文1
        return salt+finalPassword;
    }

    //验证
    //inputPassword：用户登录时输入的密码
    //sqlPassword：数据库中password字段存储的信息
    public static boolean verify(String inputPassword,String sqlPassword) {
        //若用户输入为空
        if (!StringUtils.hasLength(inputPassword)){
            return false;
        }
        //如果数据库存储为空或者长度不等于64
        if (sqlPassword==null||sqlPassword.length()!=64){
            return false;
        }
        //从数据库中生成的随机盐值里面取出盐值，因为验证时盐值要相等
        String salt = sqlPassword.substring(0, 32);
        //对盐值和明文进行加密，此时的明文是用户登录输入的，得到md5
        String finalPassword = DigestUtils.md5DigestAsHex((inputPassword + salt).getBytes());
        //比较两个密文是否相等
        return (salt+finalPassword).equals(sqlPassword);
    }

}
